home *** CD-ROM | disk | FTP | other *** search
/ Winzipper / Winzipper_ISO.iso / nt4.0 server / REGISTRY.IN_ / registry.inf
INI File  |  1996-07-12  |  13KB  |  331 lines

  1. [RegistryConstants]
  2.     MaskAllAccess          = 33554432
  3.     NoTitle                = 0
  4.     RegLastError           = $(!REG_ERROR_SUCCESS)
  5. [GetNTSource]
  6.     set Status = STATUS_SUCCESSFUL
  7.     read-syms RegistryConstants
  8.     set NTSource = A:\
  9.     set KeyName = "Software\Microsoft\Windows NT\CurrentVersion"
  10.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_READ) KeyHandle
  11.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  12.         Debug-Output "REGISTRY.INF: Couldn't open windows nt software key for read access"
  13.         goto end_getntsource
  14.     endif
  15.     GetRegValue $(KeyHandle) "SourcePath" SourcePathValue
  16.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  17.         CloseRegKey $(KeyHandle)
  18.         goto end_getntsource
  19.     endif
  20.     set NTSource =  *($(SourcePathValue), 4)
  21.     CloseRegKey $(KeyHandle)
  22. end_getntsource = +
  23.     Return $(Status) $(NTSource)
  24. [MakeServicesEntry]
  25.     set Status = STATUS_FAILED
  26.     read-syms RegistryConstants
  27.     Debug-Output "REGISTRY.INF: Creating Services node: "$($0)
  28.     OpenRegKey $(!REG_H_LOCAL) "" "system\"$(!STF_CONTROLSET)"\services" $(MaskAllAccess) ServicesKey
  29.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  30.         Debug-Output "REGISTRY.INF: Failed to open services key"
  31.         goto finish_MakeServicesEntry
  32.     endif
  33.     set StandardSet = { Type,           +
  34.                         Start,          +
  35.                         ErrorControl,   +
  36.                         Group,          +
  37.                         Dependencies,   +
  38.                         StartName,      +
  39.                         Password,       +
  40.                         BinaryPathName, +
  41.                         DisplayName     +
  42.                       }
  43.     ForListDo $(StandardSet)
  44.         set $($) = ""
  45.     EndForListDo
  46.     set KeyValues = {}
  47.     ForListDo $($1)
  48.        set Var   = *($($), 1)
  49.        set Value = *($($), 4)
  50.        ifcontains(i) $(Var) in $(StandardSet)
  51.            set $(Var) = $(Value)
  52.        else
  53.            set KeyValues = >($(KeyValues), $($))
  54.        endif
  55.     EndForListDo
  56.     set Error = NO
  57.     ForListDo { Type, Start, ErrorControl, BinaryPathName }
  58.         ifstr(i) $($($)) == ""
  59.             set Error = YES
  60.         endif
  61.     EndForListDo
  62.     ifstr(i) $(Error) == YES
  63.         Debug-Output "REGISTRY.INF: MakeServicesEntry was not passed in one of the three values: Type, Start, ErrorControl"
  64.         CloseRegKey $(ServicesKey)
  65.         goto finish_MakeServicesEntry
  66.     endif
  67.     set ServiceName = $($0)
  68.     LibraryProcedure STATUS, $(!LIBHANDLE), SetupCreateService $(ServiceName)      +
  69.                                                                $(DisplayName)      +
  70.                                                                $(Type)             +
  71.                                                                $(Start)            +
  72.                                                                $(ErrorControl)     +
  73.                                                                $(BinaryPathName)   +
  74.                                                                $(Group)            +
  75.                                                                $(Dependencies)     +
  76.                                                                $(StartName)        +
  77.                                                                $(Password)
  78.     ifstr(i) $(STATUS) != "SUCCESS"
  79.         Debug-Output "REGISTRY.INF: MakeServicesEntry: SetupCreateService function failed"
  80.         CloseRegKey $(ServicesKey)
  81.         goto finish_MakeServicesEntry
  82.     endif
  83.     set KeyPath   = {{$($0), $(NoTitle), $(MaskAllAccess)}}
  84.     shell "" CreateKey $(ServicesKey) $(KeyPath) $(KeyValues)
  85.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  86.         Debug-Output "REGISTRY.INF: Failed to shell CreateKey."
  87.         CloseRegKey $(ServicesKey)
  88.         goto error_MakeServicesEntry
  89.     endif
  90.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  91.         Debug-Output "REGISTRY.INF: Failed to create services node."
  92.         CloseRegKey $(ServicesKey)
  93.         goto error_MakeServicesEntry
  94.     endif
  95.     set MiniportKey = $($R1)
  96.     ifstr(i) $($2) != ""
  97.         set KeyPath   = {{$($5), $(NoTitle), $(MaskAllAccess)}}
  98.         set KeyValues = $($2)
  99.         shell "" CreateKey $(MiniportKey) $(KeyPath) $(KeyValues)
  100.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  101.             CloseRegKey $(ServicesKey)
  102.             CloseRegKey $(MiniportKey)
  103.             goto error_MakeServicesEntry
  104.         endif
  105.         ifstr(i) $($R0) != STATUS_SUCCESSFUL
  106.             CloseRegKey $(ServicesKey)
  107.             CloseRegKey $(MiniportKey)
  108.             goto error_MakeServicesEntry
  109.         endif
  110.         set ParametersKey = $($R1)
  111.         ForListDo $($3)
  112.             set-sub DeviceNum = $(#) 1
  113.             set EntryName = "Device"$(DeviceNum)
  114.             set KeyPath   = {{$(EntryName), $(NoTitle), $(MaskAllAccess)}}
  115.             set KeyValues = $($3)
  116.             shell "" CreateKey $(ParametersKey) $(KeyPath) $(KeyValues)
  117.             ifint $($ShellCode) != $(!SHELL_CODE_OK)
  118.                 CloseRegKey $(ServicesKey)
  119.                 CloseRegKey $(MiniportKey)
  120.                 CloseRegKey $(ParametersKey)
  121.                 goto error_MakeServicesEntry
  122.             endif
  123.             ifstr(i) $($R0) != STATUS_SUCCESSFUL
  124.                 CloseRegKey $(ServicesKey)
  125.                 CloseRegKey $(MiniportKey)
  126.                 CloseRegKey $(ParametersKey)
  127.                 goto error_MakeServicesEntry
  128.             endif
  129.             CloseRegKey $($R1)
  130.         EndForListDo
  131.         CloseRegKey $(ParametersKey)
  132.     endif
  133.     CloseRegKey $(MiniportKey)
  134.     ifstr(i) $($4) != {}
  135.         OpenRegKey $(ServicesKey) "" "eventlog\system" $(MaskAllAccess) EventLogKey
  136.         ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  137.             Debug-Output "REGISTRY.INF: Failed to open eventlog key"
  138.             CloseRegKey $(ServicesKey)
  139.             goto error_MakeServicesEntry
  140.         endif
  141.         set KeyPath   = {{$($0), $(NoTitle), $(MaskAllAccess)}}
  142.         set KeyValues = $($4)
  143.         shell "" CreateKey $(EventLogKey) $(KeyPath) $(KeyValues)
  144.         ifint $($ShellCode) != $(!SHELL_CODE_OK)
  145.             CloseRegKey $(ServicesKey)
  146.             CloseRegKey $(EventLogKey)
  147.             goto error_MakeServicesEntry
  148.         endif
  149.         ifstr(i) $($R0) != STATUS_SUCCESSFUL
  150.             CloseRegKey $(ServicesKey)
  151.             CloseRegKey $(EventLogKey)
  152.             goto error_MakeServicesEntry
  153.         endif
  154.         CloseRegKey $($R1)
  155.         CloseRegKey $(EventLogKey)
  156.     endif
  157.     CloseRegKey $(ServicesKey)
  158.     set Status = STATUS_SUCCESSFUL
  159.     goto finish_MakeServicesEntry
  160. error_MakeServicesEntry = +
  161.     shell "" ModifyServicesEntry $($0) $(!SERVICE_DISABLED)
  162. finish_MakeServicesEntry = +
  163.     Return $(Status)
  164. [GetServicesEntryStart]
  165.     set Status     = STATUS_FAILED
  166.     set StartValue = ""
  167.     read-syms RegistryConstants
  168.     Debug-Output "REGISTRY.INF: Get Services node Start value: "$($0)
  169.     set KeyName = "system\"$(!STF_CONTROLSET)"\services\"$($0)
  170.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_READ) KeyHandle
  171.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  172.         Debug-Output "REGISTRY.INF: Couldn't open services node for read access"
  173.         goto finish_GetServicesEntryStart
  174.     endif
  175.     GetRegValue $(KeyHandle) "Start" StartValueList
  176.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  177.         Debug-Output "REGISTRY.INF: Couldn't read Start value"
  178.         CloseRegKey $(KeyHandle)
  179.         goto finish_GetServicesEntryStart
  180.     endif
  181.     CloseRegKey $(KeyHandle)
  182.     set StartValue = *($(StartValueList), 4)
  183.     set Status = STATUS_SUCCESSFUL
  184. finish_GetServicesEntryStart = +
  185.     Return $(Status) $(StartValue)
  186. [RemoveServicesEntry]
  187.     set Status = STATUS_FAILED
  188.     read-syms RegistryConstants
  189.     Debug-Output "REGISTRY.INF: Removing Services node: "$($0)
  190.     shell "" ModifyServicesEntry $($0) $(!SERVICE_DISABLED)
  191.     Return $($R0)
  192. [MakeSetupKey]
  193.     set Status = STATUS_FAILED
  194.     read-syms  RegistryConstants
  195.     OpenRegKey $(!REG_H_LOCAL) "" "system\"$(!STF_CONTROLSET)"\control" $(MaskAllAccess) ControlKey
  196.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  197.         Debug-Output "REGISTRY.INF: Failed to open services key"
  198.         goto finish_MakeSetupKey
  199.     endif
  200.     set KeyPath   = { +
  201.                      {"Setup", $(NoTitle), $(MaskAllAccess)} +
  202.                     }
  203.     set KeyValues = {}
  204.     shell "" CreateKey $(ControlKey) $(KeyPath) $(KeyValues)
  205.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  206.         CloseRegKey $(ControlKey)
  207.         goto finish_MakeSetupKey
  208.     endif
  209.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  210.         CloseRegKey $(ControlKey)
  211.         goto finish_MakeSetupKey
  212.     endif
  213.     CloseRegKey $($R1)
  214.     CloseRegKey $(ControlKey)
  215.     set Status = STATUS_SUCCESSFUL
  216. finish_MakeSetupKey = +
  217.     Return $(Status)
  218. [CheckSetupModify]
  219.     set Status = STATUS_FAILED
  220.     read-syms  RegistryConstants
  221.     LibraryProcedure STATUS, $(!LIBHANDLE), TestAdmin
  222.     ifstr(i) $(STATUS) == "YES"
  223.         set Status = STATUS_SUCCESSFUL
  224.     endif
  225.     Return $(Status)
  226. [MakeSetupOptionEntry]
  227.     set Status = STATUS_FAILED
  228.     read-syms  RegistryConstants
  229.     OpenRegKey $(!REG_H_LOCAL) "" "system\"$(!STF_CONTROLSET)"\control" $(MaskAllAccess) ControlKey
  230.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  231.         Debug-Output "REGISTRY.INF: Failed to open services key"
  232.         goto finish_MakeSetupOptionEntry
  233.     endif
  234.     set KeyPath   = { +
  235.                      {"Setup", $(NoTitle), $(MaskAllAccess)} +
  236.                     }
  237.     set KeyValues = { +
  238.                       {$($0), $(NoTitle), $(!REG_VT_SZ), $($1)} +
  239.                     }
  240.     shell "" CreateKey $(ControlKey) $(KeyPath) $(KeyValues)
  241.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  242.         CloseRegKey $(ControlKey)
  243.         goto finish_MakeSetupOptionEntry
  244.     endif
  245.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  246.         CloseRegKey $(ControlKey)
  247.         goto finish_MakeSetupOptionEntry
  248.     endif
  249.     CloseRegKey $($R1)
  250.     CloseRegKey $(ControlKey)
  251.     set Status = STATUS_SUCCESSFUL
  252. finish_MakeSetupOptionEntry = +
  253.     Return $(Status)
  254. [ModifyServicesEntry]
  255.     read-syms RegistryConstants
  256.     set Status = STATUS_FAILED
  257.     set StartValue = $($1)
  258.     LibraryProcedure STATUS, $(!LIBHANDLE), SetupChangeServiceStart $($0) $(StartValue)
  259.     ifstr(i) $(STATUS) != "SUCCESS"
  260.         Debug-Output "REGISTRY.INF: ModifyServicesEntry: SetupChangeServiceStart function failed"
  261.         goto finish_ModifyServicesEntry
  262.     endif
  263.     set Status = STATUS_SUCCESSFUL
  264. finish_ModifyServicesEntry = +
  265.     Return $(Status)
  266. [CreateKey]
  267.     set Status = STATUS_FAILED
  268.     read-syms RegistryConstants
  269.     set BaseHandle = $($0)
  270.     set KeyHandle  = $(BaseHandle)
  271.     ForListDo $($1)
  272.         set KeyInfo = $($)
  273.         set KeyName = *($(KeyInfo), 1)
  274.         OpenRegKey $(BaseHandle) "" $(KeyName) $(MaskAllAccess) KeyHandle
  275.         ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  276.             Debug-Output "REGISTRY.INF: Key"$(KeyName)"doesn't exist.  Will create key"
  277.             set RegLastError = 0
  278.             CreateRegKey $(BaseHandle) $(KeyInfo) "" $(MaskAllAccess) "" KeyHandle
  279.             ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  280.                 set Status = STATUS_ERROR_CREATEKEY
  281.                 Debug-Output "REGISTRY.INF: Error in creating key"
  282.                 goto endcreate
  283.             endif
  284.         endif
  285.         ifstr(i) $(BaseHandle) != $($0)
  286.             CloseRegKey $(BaseHandle)
  287.             ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  288.                 set Status = STATUS_ERROR_CREATEKEY
  289.                 Debug-Output "REGISTRY.INF: Error in closing base handle"
  290.                 goto endcreate
  291.             endif
  292.         endif
  293.         set BaseHandle = $(KeyHandle)
  294.     EndForListDo
  295.     ifstr(i) $($2) != {}
  296.         shell "" AddValueList $(KeyHandle) $($2)
  297.         ifstr(i) $($R0) != STATUS_SUCCESSFUL
  298.             set Status = STATUS_ERROR_CREATEVALUE
  299.             goto endcreate
  300.         endif
  301.     endif
  302.     set Status = STATUS_SUCCESSFUL
  303. endcreate = +
  304.     ifstr(i) $(Status) != STATUS_SUCCESSFUL
  305.         Debug-Output "REGISTRY.INF: CreateKey Error:"$(Status)
  306.     endif
  307.     Return $(Status) $(KeyHandle)
  308. [AddValueList]
  309.    set Status = STATUS_FAILED
  310.    read-syms RegistryConstants
  311.    ForListDo $($1)
  312.        SetRegValue $($0) $($)
  313.        ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  314.            Debug-Output "REGISTRY.INF: CreateValue failed:"$($)
  315.            goto end_addvaluelist
  316.        endif
  317.    EndForListDo
  318.    set Status = STATUS_SUCCESSFUL
  319. end_addvaluelist = +
  320.    return $(Status)
  321. [EnableCrashDump]
  322.     OpenRegKey $(!REG_H_LOCAL) "" system\currentcontrolset\control\CrashControl $(!REG_KEY_SET_VALUE) CrashControlKey
  323.     ifstr $(CrashControlKey) != ""
  324.         shell "" AddValueList $(CrashControlKey) {{LogEvent        ,0,$(!REG_VT_DWORD),1},+
  325.                                                   {SendAlert       ,0,$(!REG_VT_DWORD),1},+
  326.                                                   {CrashDumpEnabled,0,$(!REG_VT_DWORD),1},+
  327.                                                   {AutoReboot      ,0,$(!REG_VT_DWORD),1}}
  328.         CloseRegKey $(CrashControlKey)
  329.     endif
  330.     return
  331.